Extended a DWORD!!!
Otázka od: Peter Sulek
6. 11. 2002 8:58
Chcel by som sa opytat ze preco sa takyto vzorec:
var
freeclus, BPC : DWORD;
FreeClusters : Extended;
BPC := 4096
totclus := 1279175
FreeClusters := BPC* freeclus;
chova tak ze mi to proste vyrata inu hodnotu ako ma. Ide vlastne o vypocet
volneho miesta na disku cize su to velke cisla a ked dam tento vzorec do
watcheru tak mi vypise nieco taketo:
"Overflow in conversion or arithmetic
operation"
ale ked to prepisem takto:
FreeClusters := BPC* (freeclus/1);
tak to ide OK
Poradte preco sa to chova tak ako sa to chova?!
S pozdravom
Peter Sulek
psulek@centrum.sk
Odpovedá: ing. Jan Fiala
6. 11. 2002 9:15
Extended je realny typ. A pri hodne velkych cislech to nebude to prave
orechove. Nebyl by pro takove pripady pro vysledek lepsi typ Cardinal ?
--
ing. Jan Fiala
mailto:jan.fiala@iol.cz
6.11.2002 Peter Sulek:
> Chcel by som sa opytat ze preco sa takyto vzorec:
> var
> freeclus, BPC : DWORD;
> FreeClusters : Extended;
> BPC := 4096
> totclus := 1279175
> FreeClusters := BPC* freeclus;
Odpovedá: Marek Dostál
6. 11. 2002 9:31
Protoze to vyhodnucuje tak, ze nejprve nasobi typ DWORD * DWORD, pricemz
vysledek pravdepodobne pretece rozsah DWORD. Tim, ze tam das to "/1" zpusobi,
ze pri nasobeni se to uz nasobi jako extended, kde rozsah staci. Jina moznost
jak to osetrit je:
FreeClusters := BPC;
FreeClusters := FreeClusters* freeclus;
Marek D.
----- Original Message -----
From: "Peter Sulek" <psulek@centrum.sk>
To: <delphi-l@clexpert.cz>
Sent: Wednesday, November 06, 2002 8:48 AM
Subject: Extended a DWORD!!!
> Chcel by som sa opytat ze preco sa takyto vzorec:
>
> var
> freeclus, BPC : DWORD;
> FreeClusters : Extended;
>
> BPC := 4096
> totclus := 1279175
>
> FreeClusters := BPC* freeclus;
>
> chova tak ze mi to proste vyrata inu hodnotu ako ma. Ide vlastne o vypocet
> volneho miesta na disku cize su to velke cisla a ked dam tento vzorec do
> watcheru tak mi vypise nieco taketo:
"Overflow in conversion or arithmetic
> operation"
>
> ale ked to prepisem takto:
>
> FreeClusters := BPC* (freeclus/1);
>
> tak to ide OK
>
> Poradte preco sa to chova tak ako sa to chova?!
>
> S pozdravom
>
> Peter Sulek
> psulek@centrum.sk
>
>
>
>
Odpovedá: Peter Sulek
6. 11. 2002 9:45
To mi je jasne, ale potrebujem typ extended pre dalsie pouzitie ale moja
otazka je ze preco ked zmenim:
FreeClusters := BPC* freeclus;
na:
FreeClusters := BPC* (freeclus/1);
tak to uz ide ?